Statistik och dataanalys I

F3: Samband mellan kategoriska variabler

Valentin Zulj

Dagens föreläsning

  • Frekvenstabeller
  • Korstabeller
    • Simultana-, marginella-, relativa-, och betingade fördelningar
  • Kategoriska variabler och samband
    • Kausalitet och Simpsons paradox

Frekvenstabeller

En variabel

  • En frekvenstabell redovisar antalet observationer i varje kategori
  • En relativ frekvenstabell visar andel istället för antal
  • Har vi flera kategoriska variabler kan vi göra en frekvenstabell per variabel
  • Tabeller över enskilda variabler visar dock inte samband mellan variabler

Korstabeller

Två kategoriska variabler

  • En korstabell (en: contingency table) visar samband mellan två variabler
  • Korstabellen nedan visar resultat ur en svensk studie som undersökte om det finns samband mellan prostatacancer och hur ofta en person äter fisk

Två kategoriska variabler

  • En variabel delar in deltagare i kategorier baserat på hur ofta de äter fisk:

    • Sällan/adrig, lite, måttligt, mycket
  • Den andra variabeln delar in deltagarna i två kategorier:

    • Diagnosticerades/diagonsticerades inte med prostatacancer under studieperioden

Två kategoriska variabler – Korstabeller i R

  • För att skapa en korstabell i R använder vi funktionen tally()
  • Skillnaden mot en frekvenstabell är att vi lägger till en extra variabel efter ett plustecken
tally(~ diet + cancer, data=fish, format="count")
          cancer
diet         No  Yes
  Never     110   14
  Small    2420  201
  Moderate 2769  209
  Large     507   42

Simultana fördelningar

  • I det gula fältet ser vi en simultanfördelning (en: joint distribution)
  • En simultanfördelning delar in observationerna i grupper baserat på två eller fler variabler
  • Om en variabel har 4 kategorier och en annan variabel har 2 kategorier får vi sammanlagt \(4 \cdot 2 = 8\) kategorier, en för varje möjlig kombination.

Simultana fördelningar

  • Om vi lägger samman talen i det gula fältet blir summan 6272, som är det totala antalet observationer (dvs antalet deltagare i studien)
  • Den simultana fördelningen visar exempelvis att det fanns det 110 deltagare i studien som sällan/aldrig åt fisk och som inte fick prostatacancer

Marginalfördelningar

  • Marginalfördelningen för den ena variabeln visar antalet observationer per kategori, utan att vi tar någon hänsyn till den andra variabeln
  • Tabellens högermarignal ger marginalfördelningen för “Fish Consumption”
  • Vi ser t.ex. att totalt 124 deltagare sällan/aldrig åt fisk, och tar ingen hänsyn till “Prostate Cancer”

Marginalfördelningar

  • Tabellens bottenmarginal visar marginalfördelningen för variabeln “Prostate Cancer”
  • Totalt 466 testdeltagare diagnostiserades med prostatacaner under studien
  • Varje marginalfördelning summerar till det totala antalet observationer:
    \(124+2621+2978+549=5806+466=6272\)

Marginalfördelningar

  • Marginalfördelningen för en kategorisk variabel är samma fördelning som den vi ser i frekvenstabellen när vi bara inkluderar en variabel
  • För att bekräfta det skriver vi först ut en korstabell i R (notera att margins = TRUE lägger till marginaler)
  • Sedan skriver vi ut frekvenstabellerna för de två variablerna var för sig
tally(~ diet + cancer, data=fish, format="count", margins=TRUE)
          cancer
diet         No  Yes Total
  Never     110   14   124
  Small    2420  201  2621
  Moderate 2769  209  2978
  Large     507   42   549
  Total    5806  466  6272

Marginalfördelningar

tally(~ diet + cancer, data=fish, format="count", margins=TRUE)
          cancer
diet         No  Yes Total
  Never     110   14   124
  Small    2420  201  2621
  Moderate 2769  209  2978
  Large     507   42   549
  Total    5806  466  6272
tally(~ diet, data=fish, format="count", margins=TRUE)
diet
   Never    Small Moderate    Large    Total 
     124     2621     2978      549     6272 
tally(~ cancer, data=fish, format="count", margins=TRUE)
cancer
   No   Yes Total 
 5806   466  6272 

Relativa fördelningar

  • Genom att dela varje frekvens med det totala antalet observationer, och sedan multiplicera med 100, kan vi få en relativ frekvenstabell

  • Antalet som åt mycket fisk och som inte fick cancer var exempelvis 507, så motsvarande andel blir

\[\cfrac{507}{6272}\cdot 100\% = 8.0835 \%.\]

Relativa fördelningar

  • Om vi sätter format="percent" i tally() får vi en korstabell med relativa frekvenser
tally(~ diet + cancer, data=fish, format="percent", margins=TRUE)
          cancer
diet                No         Yes       Total
  Never      1.7538265   0.2232143   1.9770408
  Small     38.5841837   3.2047194  41.7889031
  Moderate  44.1485969   3.3322704  47.4808673
  Large      8.0835459   0.6696429   8.7531888
  Total     92.5701531   7.4298469 100.0000000
  • Vi har dock fortfarande inte sett någon tabell som enkelt låter oss se samband mellan variablerna, vilket var syftet med korstabellen

  • Vi vänder oss därför till betingade fördelningar

Betingade fördelningar

  • För att kunna se samband mellan variablerna introducerar vi begreppet betingad fördelning (en: conditional distribution)
  • En betingad fördelning är fördelningen av en variabel givet ett värde av en annan variabel
  • Vi kan exempelvis vilja undersöka sambandet mellan prostatacancer och fisk i dieten genom att ställa frågorna:
    • Hur stor andel av de som aldrig/sällan åt fisk fick prostatacancer?
    • Hur stor andel av de som åt lite fisk fick prostatacancer?
    • Hur stor andel av de som åt måttligt med fisk fick prostatacancer?
    • Hur stor andel av de som åt mycket fisk fick prostatacancer?

Betingade fördelningar

  • När vi ställer de här frågorna är vi intresserade av risken för prostatacancer betingat på en viss diet
  • För att få svaren tittar vi på en diet-kategori i taget, där en diet-kategori definieras av hur ofta en person äter fisk
  • Genom att jämföra personer som tillhör olika diet-kategorier kan vi se om det finns samband

Betingade fördelningar

  • När vi räknar ut betingade fördelningar intresserar vi oss bara för den kategori som vi betingar på
  • Vill vi ha fördelningen av variabeln prostatacancer betingat på att individen aldrig/sällan äter fisk, ignorerar vi dem som inte tillhör den kategorin

Betingade fördelningar

  • När vi räknar ut betingade fördelningar intresserar vi oss bara för den kategori som vi betingar på
  • Vill vi ha fördelningen av variabeln prostatacancer betingat på att individen aldrig/sällan äter fisk, ignorerar vi dem som inte tillhör den kategorin

Betingade fördelningar

  • 14 deltagare fick prostatacancer, och 110 fick inte det.
  • Vi tar fram den relativa frekvensen på samma sätt som när vi bara har en variabel
  • Andelen med cancer är \(14/124=0.1129\) och andelen utan cancer är \(110/124=0.8871\)
  • Detta är vår betingade fördelning.

Betingade fördelningar

  • Vi kan använda R för att skapa en tabell som visar den betingade fördelningen för varje kategori
  • I tally() skriver vi cancer|diet, som uttalas cancer givet diet
  • Tabellen nedan anger fördelningen i procent, vilket är mycket vanligt
# Tillägget |> t() vänder på tabellen. Testa både med och utan.
tally(~cancer|diet,data=fish,format="percent",margins=TRUE) |> t()
          cancer
diet               No        Yes      Total
  Never     88.709677  11.290323 100.000000
  Small     92.331171   7.668829 100.000000
  Moderate  92.981867   7.018133 100.000000
  Large     92.349727   7.650273 100.000000

Betingade fördelningar

  • Notera att varje rad summerar till 100 procent, eftersom varje rad representerar en av de kategorier som vi betingar fördelningen på
  • Varje rad i tabellen kan alltså ses som en egen självständig fördelning
  • Med denna tabell kan vi visa skillnader mellan grupperna på ett nytt sätt
    • Bland dem som aldrig eller sällan åt fisk hade drygt 11 procent diagnosticerats med prostatacancer
    • Bland övriga grupper är motsvarande siffra lite över 7 procent
          cancer
diet               No        Yes      Total
  Never     88.709677  11.290323 100.000000
  Small     92.331171   7.668829 100.000000
  Moderate  92.981867   7.018133 100.000000
  Large     92.349727   7.650273 100.000000

Kategoriska variabler och samband

Vi kan ge en snabbare överblick av samma information med en graf

bargraph(~cancer|diet, data=fish, type="percent")

Kategoriska variabler och samband

  • Vi kan också gruppera efter variabeln cancer
  • Färgerna indikerar diet, och två staplar av samma färg summerar till 100%
  • Vi ser att cancer förekom något mer bland deltagare som aldrig/sällan åt fisk
bargraph(~cancer, groups=diet, data=fish, type="percent")

Kategoriska variabler och samband

  • Givet en viss diet kan vi nu säga hur stor andel som har diagnosticerats med cancer

  • Betyder det att vi även kan säga hur stor andel av dem som diagnosticerat med cancer som har en viss diet?

  • Nej, inte utan att räkna ut nya betingade värden

  • Den här gången vill vi veta hur ofta personer äter fisk

    • betingat på att en person har diagnosticerats med cancer.
    • betingat på att en person inte har diagnosticerats med cancer.

Kategoriska variabler och samband

  • Vi tar den här gången fram en tabell som är betingad på cancer-variabeln

  • Säg att vi vill räkna ut andelen som aldrig/sällan åt fisk betingat på att de fick cancer, vi gör då på liknande sätt som tidigare:

    • Vi ignorerar då alla deltagare som inte fick cancer
    • Antalet deltagare som fick prostatacancer var 466, och av åt 14 aldrig/sällan åt fisk
    • Bland dem som fick cancer var den procentuella andelen som aldrig/sällan åt fisk \[ \frac{14}{466} \cdot 100 = 3.004292 \% \]

Kategoriska variabler och samband

tally(~ diet | cancer, data=fish, format="percent", margins=TRUE)
          cancer
diet               No        Yes
  Never      1.894592   3.004292
  Small     41.681020  43.133047
  Moderate  47.692043  44.849785
  Large      8.732346   9.012876
  Total    100.000000 100.000000
  • För att göra motsvarande beräkning i R sätter vi diet|cancer i tally()

  • Notera att det nu är kolumnerna som summerar till 100, då vi nu har gjort en separat frekvenstabell för varje kolumn

  • Något som framgår här, och som vi inte såg när vi betingade fördelningen på diet, är att det är få av deltagarna som aldrig eller sällan äter fisk

Kategoriska variabler och samband

  • Vi gör ett stapeldiagram grupperat på cancer-variabeln
  • De blå staplarna summerar till 100 procent, och staplarna i beige summerar också till 100 procent
  • Vi ser att bland de som aldrig eller sällan äter fisk är cancerdiagnoserna något överrepresenterade
bargraph(~diet, groups=cancer, data=fish, type="percent")

Kategoriska variabler och samband - fler exempel

  • Stapeldiagrammet till vänster är betingat på variabeln Class. Det hjälper oss att besvara frågan om hur stor andel som överlevde inom varje biljettklass

  • Stapeldiagrammet till höger är betingat på variabeln Survived. Det hjälper oss att besvara frågan om hur stor andel av dem som överleve, respektive av dem som inte överlevde, som reste i en viss klass

Kategoriska variabler och samband - fler exempel

  • Stapeldiagrammet till vänster ger en bild av andelen som överlevde katastrofen, men ingen information om hur många som ingick i varje klass

  • Stapeldiagrammet till höger ger en bild av hur många som reste i respektive klass, men ingen information om andelen som överlevde

Kategoriska variabler och samband - mosaic plot

  • En mosaic plot ger en mer komplett bild av en simultan fördelning än ett vanligt stapeldiagram
  • Varje ruta har en area som motsvarar andelen observationer som rutan representerar

Kategoriska variabler och samband - mosaic plot

  • En mosaic plot kan dessutom visa fler än två variabler i samma bild
  • Grafen nedan visar variablerna Class, Survived och Gender

Kategoriska variabler och samband - mosaic plot

  • I R skapar vi en mosaic-plot med funktionen mosaic() i paketet vcd

  • Ett exempel med studien om fisk och prostatacancer ges nedan, och ni kommer arbeta mer med detta i datorlab 3

mosaic(~diet + cancer, data=fish, shade=TRUE,
       gp=shading_Friendly2, legend=FALSE) #Kräver paketet vcd

Kategoriska variabler och samband - fisk och cancer

  • Det är tydligt att deltagare i studien som diagnosticerades med cancer var överrepresenterade bland dem som aldrig åt fisk

  • Betyder det att vi har hittat ett samband? Ja och nej.

    • Ja, bland deltagarna i studien finns ett samband
    • Nej, vi kan inte utan vidare säga att det finns ett samband som gäller för hela befolkningen
  • Det var bara 14 deltagare i studien som fick prostatacancer och som aldrig/sällan äter fisk, ett litet underlag om vi vill dra slutsatser gällande hela befolkningen

  • Det kan vara slumpen som gör att vi ser ut att ha ett samband mellan två variabler

Kategoriska variabler och samband - Titanic

  • Vi vill avgöra om det sambandet vi ser i vårt stickprov beror på slumpen, eller om det faktiskt finns ett samband i populationen
  • För att göra detta ger vi oss in i en gren av statistiken som kallas för inferens
  • Formella metoder för inferens ingår i del 2 av kursen, men redan nu kan vi ge en mer allmän bild av vad det är

Kategoriska variabler och samband - Titanic

  • En forskare ställer frågan: Finns det ett samband mellan vilka som överlevde Titanic-katastrofen och vilket typ av biljett de reste med?
  • Vi ser i vårt datamaterial att andelen som överlevde är störra i första klass än i tredje klass
    • Kan vi då säga att någon som reste i första klass hade större möjligheter att överleva?
    • Eller kan det like gärna ha varit slumpen som gjorde att en större andel ur första klass klarade sig?
  • I kursboken (sid 48-49) beskrivs en metod som skulle kunna användas för att ge svar på frågan

Kategoriska variabler och samband - Titanic

  • Pajdiagrammet visar den faktiska fördelningen av passagerarkategorier bland dem som överlevde
  • 1 står för 1:a klass, 2 för andra klass, 3 för tredje klass och Crew för besättning

Kategoriska variabler och samband - Titanic

  • För att avgöra om det finns ett verkligt samband mellan två variabler är det vanligt att ställa upp en hypotes som säger att det inte finns något samband
  • I det här fallet skulle hypotesen vara att det saknas samband mellan biljettyp och överlevnad
  • Om hypotesen stämmer borde de 712 platserna i livbåtarna vara fördelade slumpvis mellan de 2208 passagerarna
  • Vi kan testa att fördela platser i livbåtarna slumpmässigt (50% chans för varje individ), och jämföra resultaten med våra observationer

Kategoriska variabler och samband - Titanic

Kategoriska variabler och samband - Titanic

  • Vi upprepar vår procedur att fördela platserna i livbåtarna flera gånger

  • Varje gång gör vi ett nytt pajdiagram som visar utfallet

Kategoriska variabler och samband - Titanic

  • Den verkliga fördelningen är markerad med en kvadrat
  • Ser det ut som att den är resultatet av samma slumpvisa process som använts för att skapa de övriga fördelningarna?

Kategoriska variabler och samband - Titanic

  • Om den verkliga fördelningen är resultatet av samma slumpprocess som övriga fördelningar på bilden, då är det ett väldigt sällsynt (osannlikt) utfall
  • Vi lutar därför åt att det finns ett samband!

Kategoriska variabler och samband - kausalitet

  • Antag att vi har konstaterat att det finns ett samband mellan biljettyp och överlevnad

  • Betyder det att en förstaklassbiljett per automatik medförde att du hade en bättre chans att få en plats i en livbåt?

  • Nej, ett samband är inte samma sak som kausalitet!

  • Det kan finnas andra variabler som orsakar sambandet: Var social ställning en underliggande faktor? Prioriterades kvinnor och barn på 1910-talet?

  • I fallet med cancer och fisk: äter människor som är hälsomedvetna mer fisk, samtidigt som de äter mer grönsaker och ägnar sig mer åt fysisk aktivitet?

Kategoriska variabler och samband - kausalitet

Att fundera över

  • Om det finns ett samband mellan fler tv-apparater i ett land och högre medellivslängd, beror det på att tv-tittande är nyttigt eller finns det någon annan bakomliggande variabel som spelar in?
  • När du tittar på ett dataset, var medveten om att det alltid finns dolda variabler (en: lurking variables)
  • Dolda variabler är variabler som inte är inkluderade i datamaterialet, men som kan vara högst relevanta i kontexten

Ett (relativt) aktuellt exempel

Ett (relativt) aktuellt exempel

  • Vissa tolkade artikeln illvilligt, och menade att kraven sänktes för att kvotera in kvinnor som egentligen inte förtjänar en plats på utbildningen

  • Finns det någon som kan kontextualisera?

  • Många har påpekat att färre kvinnor än män skriver HP alls, eftersom kvinnor i genomsnitt har högre gymnasiebetyg (och därför inte behöver HP)
  • Den “minskade mångfalden” beror så inte på att kvinnor skriver dåliga HP, utan att många kvinnor inte behövt skriva HP (och därför ej klarar kravet)
  • Finns det någon som kan identifiera en dold (och högst relevant) variabel?
  • Ett givet exempel skulle kunna vara gymnasiebetyg

Kategoriska variabler och samband - Simpsons paradox

  • Simpson’s paradox innebär att ett samband mellan två variabler kan försvinna när datamaterialet delas in i olika grupper

  • På sid 106 i kursboken hittar vi en korstabell som tycks peka på att män hade lättare än kvinnor att bli antagna som doktorander på UC Berkeley

  • Över 40 procent av männen som sökte blev antagna, men bara 30 procent av kvinnorna, och det ser ut som att kvinnor blev negativt särbehandlade

Kategoriska variabler och samband - Simpsons paradox

  • När vi ser samma siffror nedbrutna per fakultet (school) blir bilden en annan

  • På fyra av de sex fakulteterna var andelen antagna större bland kvinnor än bland män
  • Hur går det ihop?

Kategoriska variabler och samband - Simpsons paradox

  • Fler män sökte till school A och B, där det var lättare att komma in

  • Fler kvinnor sökte till school E och F, där det var svårare att komma in

  • Kvinnor hade lägre antagningsgrad på grund av att de sökte program som var svårare att komma in på

Credits

Dessa slides skapades av Karl Sigfrid för kursen Statistik och Dataanalys I och har uppdaterats av Oskar Gustafsson och Valentin Zulj